package com.fulihui.usercore.api;

import com.fulihui.usercore.dto.AuthDTO;
import com.fulihui.usercore.request.auth.*;

import org.near.servicesupport.result.TSingleResult;

/**
 * @author Willard.Hu on 2016/11/3 0003.
 */
public interface UserAuthService {

    /**
     * (分表分库)已完成
     * 判断账号是否已注册，只针对 loginid
     *
     * @param request {@link AuthQueryRequest} 只需要赋值 LoginId
     * @return 是否已注册 true/false
     */
    TSingleResult<Boolean> registered(AuthQueryRequest request);

    /**
     * (分表分库)已完成
     * 快捷登陆，如果用户不存在，直接注册
     *
     * @param request {@link QuickAuthRequest}
     * @return {@link AuthDTO}
     */
    TSingleResult<AuthDTO> quickLogin(QuickAuthRequest request);

    /**
     * (分表分库)已完成
     * 账号登陆
     *
     * @param request {@link AccountAuthRequest}
     * @return {@link AuthDTO}
     */
    TSingleResult<AuthDTO> accountLogin(AccountAuthRequest request);

    /**
     * (分表分库)已完成
     * 快捷登入，并且绑定微信（特殊接口！），
     * 在非微信环境快捷注册后，没有微信信息，调用此接口可以在快捷登入后，
     * 并且绑定微信信息。
     *
     * @param request WechatAuthRequest
     * @return {@link AuthDTO}
     */
    TSingleResult<AuthDTO> quickLoginAndBindingWechat(WechatAuthRequest request);

    /**
     * (分表分库)已完成
     * 微信登陆
     *
     * @param request {@link WechatAuthRequest}
     * @return {@link AuthDTO}
     */
    TSingleResult<AuthDTO> wechatLogin(WechatAuthRequest request);

    /**
     * (分表分库)已完成
     * 微信注册
     *
     * @param request {@link WechatAuthRequest}
     * @return {@link AuthDTO}
     */
    TSingleResult<AuthDTO> wechatRegister(WechatAuthRequest request);

    /**
     * (分表分库)已完成
     * 耳朵资讯 密码 注册
     *
     * @param request
     * @return
     */
    TSingleResult<AuthDTO> accountRegister(AccountAuthRequest request);

    /**
     * (分表分库)已完成
     * H5注册带绑定微信
     *
     * @param request
     * @return
     */
    TSingleResult<AuthDTO> accountRegisterAndBindingWechat(AccountAuthRequest request);

    /**
     * (分表分库)已完成   耳多资讯专用注册方法
     * 资讯 账号注册 带绑定微信
     *
     * @param request
     * @return
     */
    TSingleResult<AuthDTO> appAccountBindingWechatRegister(AccountAndBindingWechatAuthRequest request);

    /**
     * (分表分库)已完成 公众号在用接口
     * 微信授权登录，如果用户不存在，直接注册
     *
     * @param request {@link WechatAuthRequest}
     * @return {@link AuthDTO}
     */
    TSingleResult<AuthDTO> weixinLogin(WechatAuthRequest request);
}
